import { PrismaClient } from '@prisma/client'

async function initDatabase() {
  const prisma = new PrismaClient()
  
  try {
    await prisma.$connect()
    console.log('✅ 数据库连接成功')
    
    // 检查是否已有分类数据
    const categoryCount = await prisma.category.count()
    
    if (categoryCount === 0) {
      console.log('未找到分类数据，正在初始化...')
      
      // 创建默认分类
      const categories = [
        { name: '开发工具', icon: '💻' },
        { name: '设计工具', icon: '🎨' },
        { name: '效率工具', icon: '⚡' },
        { name: '娱乐游戏', icon: '🎮' },
        { name: '学习教育', icon: '📚' },
        { name: '生活服务', icon: '🏠' }
      ]
      
      for (const category of categories) {
        await prisma.category.create({
          data: category
        })
        console.log(`✅ 创建分类: ${category.name}`)
      }
      
      console.log('✅ 分类数据初始化完成')
    } else {
      console.log(`✅ 已存在 ${categoryCount} 个分类`)
    }
    
    // 检查是否已有管理员用户
    const adminUser = await prisma.user.findFirst({
      where: {
        role: 'ADMIN'
      }
    })
    
    if (!adminUser) {
      console.log('未找到管理员用户，正在创建默认管理员...')
      
      // 创建默认管理员用户 (仅用于开发环境)
      if (process.env.NODE_ENV === 'development') {
        const defaultAdmin = await prisma.user.create({
          data: {
            email: 'admin@dev.local',
            name: '管理员',
            role: 'ADMIN',
            password: '$2a$12$rXHzJ0c.cxZZFqIm0C3N0uY9aDv5A7VbYJ0HnQbTbIzP4Y9mQ2YyG' // bcrypt hash of "admin"
          }
        })
        console.log(`✅ 创建默认管理员用户: ${defaultAdmin.email}`)
      } else {
        console.log('生产环境中不会自动创建管理员用户，请手动创建')
      }
    } else {
      console.log(`✅ 已存在管理员用户: ${adminUser.email}`)
    }
  } catch (error) {
    console.error('数据库初始化失败:', error)
  } finally {
    await prisma.$disconnect()
  }
}

initDatabase()